Represent extensions on cosets of a module hyperplane - #6545
Conversation
Constructing a permutation representation for a group extension searched for larger and larger quotients of the extension, lifting through subgroup abelianizations. For a candidate subgroup of index i that rewrites the preimage on roughly i times the number of generators, so a group without small-index subgroups makes the search collapse: for L3(3) with its 7-dimensional GF(3) module the first usable subgroup has index 144, giving a presentation on some 2000 generators, and one extension takes over six minutes. A subspace of the module containing no nonzero submodule has trivial core in the extension -- a normal subgroup inside it is a submodule -- so the extension acts faithfully on its cosets, and a plain coset enumeration produces that action. For an irreducible module the subspace is a hyperplane and the degree is only prime * |G|. Use this whenever such a hyperplane exists and its degree is manageable, and reduce the degree afterwards; a larger codimension is not worth it, as the degree then grows by a factor of prime per codimension and the reduction costs more than the search. For the L3(3) example above, Extensions drops from about 3400 to 120 seconds while the resulting degrees get no worse. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #6545 +/- ##
==========================================
- Coverage 78.97% 78.97% -0.01%
==========================================
Files 684 683 -1
Lines 294201 294160 -41
Branches 8670 8651 -19
==========================================
- Hits 232359 232323 -36
- Misses 60030 60033 +3
+ Partials 1812 1804 -8 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
hulpke
left a comment
There was a problem hiding this comment.
The fundamental problem lies differently, namely in the MaximalAbelianQuotient method. This should use abelian rewriting, but the corresponding method (commented out, line 1143 in ghomfp.gi) had problems and thus was not ready for prime time.
This approach here is producing an initially horribly large permutation degree, larger than |G|. Is that what we want?
Re-enable method for MaximalAbelianQuotient (that had thrown up problems in the general context) for special use here. This blows the kludge of gap-system#6545 out of the water.
Re-enable method for MaximalAbelianQuotient (that had thrown up problems in the general context) for special use here. This blows the kludge of gap-system#6545 out of the water.
Re-enable method for MaximalAbelianQuotient (that had thrown up problems in the general context) for special use here. This blows the kludge of gap-system#6545 out of the water.
|
Thanks. |
At the risk of being arrogant, I would be surprised to see a single example where this approach (#6545) is superior to the one from #6547. The reason for this is roughly the analysis of extensions in section 4 of my 2001 Exp.Math. paper -- the stabilizer of the subspace (which has much smaller index than tyhe subspace) will have an abelian quotient that exposes the kernel. |
The problem
Extensions(G,M)for a non-solvableGspends nearly all its time inFpGroupCocycle, finding a permutation representation of the extension --not in
TwoCohomologyGeneric. Reported by Thomas Breuer forL3(3)withits 7-dimensional
GF(3)module, where thecohomolopackage is an orderof magnitude faster overall:
Breakdown on my machine:
TwoCohomologyGeneric0.4 s, then 373 s foreach of the eight non-split cocycles.
The search lifts the quotient
E -> Gstep by step, testing subgroups ofdescending index and using
LargerQuotientBySubgroupAbelianization. For acandidate of index
ithe preimage's presentation is rewritten on roughlyi * ngensgenerators.L3(3)has nothing usable below index 52; theattempt at index 144 with 16 generators produces a presentation on some
2000 generators, and everything downstream chokes on it.
The change
If a subspace
Uof the module contains no nonzero submodule, then itscore in the extension is trivial -- a normal subgroup contained in
Ulies in the module and hence is a submodule. So the extension acts
faithfully on the cosets of
U, and one coset enumeration produces thataction. For an irreducible module
Uis a hyperplane, of indexprime * |G|.Two new helpers,
ModuleCoreOfSubspaceandSubmoduleFreeSubspace, findsuch a subspace;
FpGroupCocycleuses it before falling back to theexisting search.
Guards, each of which measurement showed to be necessary:
degree by
prime, and the degree reduction afterwards then costs morethan the old search. On the reducible 10-dimensional
GF(5)module fromtst/testbugfix/2025-11-06-PermrepExtension.tst: old 1 s, new 170 s.10^5(EXTENSION_COSET_ENUMERATION_MAXDEG).trivial and the enumeration degenerates to the regular representation.
:cheapskips the fullSmallerDegreePermutationRepresentationafterwards. Without the option that reduction is worth its price here,
because the degree coming out of the module is far off the optimum.
Numbers
Extensionsfor the example above, and the tests that cover this code:Extensions(L3(3), M)NrConjugacyClassesof all ninetst/teststandard/twocohom.tsttst/testbugfix/2025-11-06-PermrepExtension.tsttst/testextra/grpperm.tstFor reference, the
cohomoloroute on the same machine costs about 200 sfor the nine extensions, so this also removes the gap that prompted the
report.
Test
tst/teststandard/twocohom.tstgains the reported example, built withoutAtlasRepfrom the tensor square of the natural module ofSL(3,3). Itconstructs one of the nine extensions rather than all nine, which keeps it
at about 15 seconds -- against some 370 seconds on master.
Verification
PCore(.,3)elementary abelian oforder
3^7, quotient of order 5616, and exactly one of them splits.cohomoloproduces(3 x 57, 6 x 49).
twocohom.tst,2025-11-06-PermrepExtension.tst,2026-08-02-TwoCohomologyGeneric.tstandtestextra/grpperm.tstpass.C2,S3,A5with trivial, regular and reduciblemodules) produce degrees identical to master.
Not addressed here
TwoCohomologyGenericderives from the confluentrewriting system has 9 generators for
L3(3)where 2 suffice.cohomolo's extension presentation has 9 generators against our 16, andthat alone is worth a factor of about 7 when the generic
IsomorphismPermGroupis used on either.SmallerDegreePermutationRepresentation,roughly 8 s per extension;
cohomolopays the same.TwoCohomologyGeneric(TrivialGroup(IsPermGroup), <module of dim >= 2>)errors with
MaximumList: <list> must contain at least one element.Pre-existing, unrelated, not touched here.
This pull request was prepared with AI assistance (Claude Opus 5); see the
Co-authored-bytrailer on the commit.